#include "toolkit.h"
#include "setting.h"
#include "helpform.h"

#include <QShortcut>
#include <QTextStream>

HelpForm::HelpForm(QWidget* p, Qt::WindowFlags f):QDialog(p, f)
{
	m_ui.setupUi(this);
	init();
}

HelpForm::~HelpForm()
{
}

void HelpForm::init()
{
	// 移除F1快捷键，因为主窗口已经处理了F1快捷键
	// QShortcut* k = new QShortcut(QKeySequence(Qt::Key_F1), this);
	// connect(k, SIGNAL(activated()), this, SLOT(close()));
	
	// 直接设置窗口标题为中文
	setWindowTitle("帮助");
	
	// 设置中文帮助内容
	QString helpText = R"(
<!DOCTYPE HTML>
<html>
<head>
<style>
p, li { white-space: pre-wrap; }
</style>
</head>
<body>
<p><span style="font-weight:600;">sokit</span></p>
<p></p>
<p><span>免费版本: 1.3.1 (GPLv3)</span></p>
<p><span>网站: https://github.com/sinpolib/sokit/</span></p>
<p><span>邮箱: sinpowei@gmail.com</span></p>
<p></p>
<p><span>这是一个TCP/UDP数据包发送、接收和传输工具</span></p>
<p></p>
<p></p>
<p><span>--------------------------------------------------------------</span></p>
<p></p>
<p><span style="font-weight:600;">发送缓冲区语法:</span></p>
<p></p>
<p><span>发送缓冲区中的所有字符都按原样处理（多字节字符使用UTF8编码），如果要发送十六进制字符，请将子字符串放在[]中，例如[FF AB CD 12 12]，发送时会自动去除空格和[]符号。（使用双[[表示普通的[字符）</span></p>
<p></p>
<p><span style="font-weight:600;">键盘快捷键:</span></p>
<p></p>
<p><span style="font-weight:600;">F1</span><span>	显示/隐藏此窗口</span></p>
<p><span style="font-weight:600;">F10</span><span>	设置/取消主窗口置顶</span></p>
<p></p>
<p><span style="font-weight:600;">Esc</span><span>	聚焦到第一个输入控件</span></p>
<p><span style="font-weight:600;">F2</span><span>	聚焦到连接列表（如果存在）</span></p>
<p><span style="font-weight:600;">F3</span><span>	聚焦到日志列表</span></p>
<p><span style="font-weight:600;">F4</span><span>	聚焦到日志条目详情</span></p>
<p></p>
<p><span style="font-weight:600;">Alt-0</span><span>	聚焦到缓冲区0的数据（如果存在）</span></p>
<p><span style="font-weight:600;">Alt-1</span><span>	聚焦到缓冲区1的数据</span></p>
<p><span style="font-weight:600;">Alt-2</span><span>	聚焦到缓冲区2的数据</span></p>
<p><span style="font-weight:600;">Alt-3</span><span>	聚焦到缓冲区3的数据</span></p>
<p></p>
<p><span style="font-weight:600;">Ctr-Shf-1</span><span>	聚焦到方向组合框1的数据（如果存在）</span></p>
<p><span style="font-weight:600;">Ctr-Shf-2</span><span>	聚焦到方向组合框2的数据（如果存在）</span></p>
<p><span style="font-weight:600;">Ctr-Shf-3</span><span>	聚焦到方向组合框3的数据（如果存在）</span></p>
<p></p>
<p><span style="font-weight:600;">Ctrl-0</span><span>	发送缓冲区0的数据（如果存在）</span></p>
<p><span style="font-weight:600;">Ctrl-1</span><span>	发送缓冲区1的数据</span></p>
<p><span style="font-weight:600;">Ctrl-2</span><span>	发送缓冲区2的数据</span></p>
<p><span style="font-weight:600;">Ctrl-3</span><span>	发送缓冲区3的数据</span></p>
<p></p>
<p><span style="font-weight:600;">Ctrl-T</span><span>	触发TCP按钮或组合框</span></p>
<p><span style="font-weight:600;">Ctrl-U</span><span>	触发UDP按钮或组合框</span></p>
<p><span style="font-weight:600;">Ctrl-S</span><span>	触发开始按钮</span></p>
<p></p>
<p><span style="font-weight:600;">F5</span><span>	触发方向组合框1（如果存在）</span></p>
<p><span style="font-weight:600;">F6</span><span>	触发方向组合框2（如果存在）</span></p>
<p><span style="font-weight:600;">F7</span><span>	触发方向组合框3（如果存在）</span></p>
<p></p>
<p><span style="font-weight:600;">Ctrl-W</span><span>	写日志到文件</span></p>
<p><span style="font-weight:600;">Ctrl-D</span><span>	清空日志窗口</span></p>
<p></p>
<p><span style="font-weight:600;">Alt-A</span><span>	全选所有连接（如果存在）</span></p>
<p><span style="font-weight:600;">Ctrl-K</span><span>	断开所有已选连接（如果存在）</span></p>
<p></p>
<p><span style="font-weight:600;">Ctrl-A</span><span>	当前输入控件全选</span></p>
<p><span style="font-weight:600;">Ctrl-C</span><span>	复制当前输入控件选中内容</span></p>
<p><span style="font-weight:600;">Ctrl-V</span><span>	粘贴到当前输入控件</span></p>
<p><span style="font-weight:600;">Ctrl-X</span><span>	剪切并复制当前输入控件选中内容</span></p>
<p></p>
</body>
</html>
)";
	
	m_ui.info->setHtml(helpText);
}



